1. Field of the Invention
The present invention relates to digital image processing systems, and more particularly, to image processing systems that have limited memory resources and that allow for image manipulation.
2. Brief Description of Background Arts
Conventional image data processing systems have one or more additional large memory arrays in addition to a primary memory array to accommodate data intensive processes, for example rotating an image. To rotate the image by ninety (90) degrees in an image data processing system requires a significant amount of memory array space. Specifically, to rotate the image, a large amount of image data must be processed and moved between two or more of the large memory arrays.
There are significant drawbacks of the conventional image data processing systems having these additional memory arrays. For example, because memory arrays are expensive, each additional memory array significantly increases the overall cost of the image data processing system. In addition, because memory arrays are relatively large and consume valuable space in electronic circuit environments, each additional memory array consumes valuable footprint space within an image data processing system, making such a device undesirable for compact applications.
Attempts to save memory by rotating pixels one-by-one, require that the next source location (i.e., the location of the pixel to be rotated) coincides with the destination address of the previously rotated pixel. This is a chain calculation. Each rotated pixel pushes an old pixel out of its cell, so that this old pixel is the next one to be rotated. Once the destination address is found for this new rotation, another pixel is going to be pushed out of its cell, and the process must be repeated.
The problem with this kind of chain calculation is that it might end up with a destination address that coincides with the initially selected source address before all the image pixels have been rotated. Whether or not this is going to happen depends on the relation between the height and width of the image. As the number of pixel rows and the number of pixel columns of a scanned image can have arbitrary values, this relation cannot be controlled, and the results of the chain calculation are hard to predict. In sum, an attempt to rotate image pixels one-by-one yields unpredictable results for an image of arbitrary size, and might deadlock before the rotation is complete.
Thus, there is a need for an image data processing system and method that (1) allows for image rotation using a limited size memory array, (2) that is also fast and efficient with respect to rotation of the image.